package cn.cqie.attendance.manager.service;

import cn.cqie.attendance.common.util.Page;
import cn.cqie.attendance.manager.pojo.AdminGroup;
import cn.cqie.attendance.manager.pojo.AdminStudent;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 697
 * @date 2021/6/22 10:45
 */
@Service
public interface AdminGroupService {


    /**
     * 查看小组信息、可以按照是否结业、小组名查看
     * @param status
     * @param groupName
     * @return
     */
    Page<AdminGroup> queryGroupInfoByStatusAndGroupName(Integer status,String groupName);


    /**
     * 新建分组
     * @param status 状态
     * @param groupName 分组名称
     * @return
     */
    Page addGroup(Integer status, String groupName);


    /**
     * 根据分组名称查询分组数量
     * @param adminGroup 分组名称
     * @return
     */
    int queryCountGroupInfoByGroupName(AdminGroup adminGroup);

    /**
     * 用于修改是否判断小组是否结业
     * @param groupId
     * @return
     */
    int queryGroupStatusFalse(Integer groupId);


    /**
     * 根据分组ID修改分组信息  名称、状
     * @param groupName 分组名称
     * @param status 分组状态
     * @param groupId 分组ID
     * @return
     */
    Page updateGroupInfoById(String groupName,Integer status,Integer groupId);



    /**
     * 根据分组ID删除分组信息
     * @param groupId 分组ID
     * @return
     */
    Page deleteGroupById(Integer groupId);


    /**
     * 根据分组ID查询分组学生信息 模糊 可组合查询
     * @param groupName 分组名称
     * @param stuName 学生姓名
     * @param stuNumber 学号
     * @param groupId 分组ID
     * @return
     */
    Page<AdminStudent> queryStudentByGroupIdCombination(String groupName,String stuName,String stuNumber,Integer groupId);


    /**
     * 更换学生分组 支持批量更新
     * @param groupId 分组Id
     * @param ListStuId 学生ID
     * @return
     */
    Page updateStudentGroupById(Integer groupId,List ListStuId);



    /**
     * 查询所有未结业的学生
     * @param collegeName 学员名
     * @param majorName 专业
     * @param gradeName 年级
     * @param className 班级
     * @param stuName 学生姓名
     * @param stuNumber 学号
     * @return
     */
    Page<AdminStudent> qureyAllStudentNoGraduation(String collegeName,String majorName,String gradeName,String className,String stuName,String stuNumber);


    /**
     * 小组新增成员
     * @param groupId 小组ID
     * @param ListStuId　学生ID
     * @return
     */
    Page addStudentToGroup(Integer groupId,List ListStuId);


    /**
     * 删除小组某个学生  支持批量删除
     * @param ListStuId 学生ID
     * @return
     */
    Page deleteStudentByGroupById(List ListStuId);
}
